package com.xmtlxx.tms.domain.vo;

import com.xmtlxx.common.annotation.ExcelDictFormat;
import com.xmtlxx.common.convert.ExcelDictConvert;
import com.xmtlxx.oms.domain.vo.OperatorLogVo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.xmtlxx.system.domain.SysOss;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


/**
 * 订单视图对象 t_order
 *
 * @author xmtlxx
 * @date 2022-08-15
 */
@Data
@ApiModel("订单视图对象")
@ExcelIgnoreUnannotated
public class OrderVo {

    private static final long serialVersionUID = 1L;

    /**
     * 订单ID
     */
    @ExcelProperty(value = "订单ID")
    @ApiModelProperty("订单ID")
    private String id;

    /**
     * 部门ID
     */
    @ExcelProperty(value = "部门ID")
    @ApiModelProperty("部门ID")
    private Long deptId;

    @ApiModelProperty("部门编号")
    private String deptNo;

    /**
     * 订单号
     */
    @ExcelProperty(value = "订单号")
    @ApiModelProperty("订单号")
    private String orderNo;

    /**
     * 任务单ID
     */
    @ExcelProperty(value = "任务单ID")
    @ApiModelProperty("任务单ID")
    private String taskId;

    /**
     * 出入库单ID
     */
    @ExcelProperty(value = "出入库单ID")
    @ApiModelProperty("出入库单ID")
    private String objId;

    /**
     * 父级订单id
     */
    @ExcelProperty(value = "父级订单id")
    @ApiModelProperty("父级订单id")
    private String fid;

    /**
     * 委托单号
     */
    @ExcelProperty(value = "委托单号")
    @ApiModelProperty("委托单号")
    private String entrustNo;

    /**
     * 订单序列号，最多4位
     */
    @ExcelProperty(value = "订单序列号，最多4位")
    @ApiModelProperty("订单序列号，最多4位")
    private Long orderSerial;

    /**
     * 来源
     */
    @ExcelProperty(value = "来源", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "tms_order_source_type")
    @ApiModelProperty("来源")
    private String sourceType;

    /**
     * 订单状态
     */
    @ExcelProperty(value = "订单状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "tms_order_status")
    @ApiModelProperty("订单状态")
    private String status;

    /**
     * 订单类型
     */
    @ExcelProperty(value = "订单类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "tms_order_type")
    @ApiModelProperty("订单类型")
    private String type;

    /**
     * 签收时间
     */
    @ExcelProperty(value = "签收时间")
    @ApiModelProperty("签收时间")
    private Date signTime;

    /**
     * 作废时间
     */
    @ExcelProperty(value = "作废时间")
    @ApiModelProperty("作废时间")
    private Date cancelTime;

    /**
     * 配送时间
     */
    @ExcelProperty(value = "配送时间")
    @ApiModelProperty("配送时间")
    private Date deliveryTime;

    /**
     * 配送方式
     */
    @ExcelProperty(value = "配送方式")
    @ApiModelProperty("配送方式")
    private String deliveryType;

    /**
     * 送达时间
     */
    @ExcelProperty(value = "送达时间")
    @ApiModelProperty("送达时间")
    private Date arriveTime;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    @ApiModelProperty("备注")
    private String memo;

    /**
     * 客户id
     */
    @ExcelProperty(value = "客户id")
    @ApiModelProperty("客户id")
    private String clientId;

    /**
     * 客户名称
     */
    @ExcelProperty(value = "客户名称")
    @ApiModelProperty("客户名称")
    private String clientName;

    /**
     * 客户联系人
     */
    @ExcelProperty(value = "客户联系人")
    @ApiModelProperty("客户联系人")
    private String clientContacts;

    /**
     * 客户联系人电话
     */
    @ExcelProperty(value = "客户联系人电话")
    @ApiModelProperty("客户联系人电话")
    private String clientTel;

    /**
     * 寄件地址
     */
    @ExcelProperty(value = "寄件地址")
    @ApiModelProperty("寄件地址")
    private String sendAddress;

    /**
     * 寄件联系人
     */
    @ExcelProperty(value = "寄件联系人")
    @ApiModelProperty("寄件联系人")
    private String sendContacts;

    /**
     * 寄件联系电话
     */
    @ExcelProperty(value = "寄件联系电话")
    @ApiModelProperty("寄件联系电话")
    private String sendTel;

    /**
     * 寄件日期
     */
    @ExcelProperty(value = "寄件日期")
    @ApiModelProperty("寄件日期")
    private Date sendDate;

    /**
     * 寄件地址纬度
     */
    @ExcelProperty(value = "寄件地址纬度")
    @ApiModelProperty("寄件地址纬度")
    private String sendLat;

    /**
     * 寄件地址经度
     */
    @ExcelProperty(value = "寄件地址经度")
    @ApiModelProperty("寄件地址经度")
    private String sendLng;

    /**
     * 寄件地址简称
     */
    @ExcelProperty(value = "寄件地址简称")
    @ApiModelProperty("寄件地址简称")
    private String sendAddr;

    /**
     * 收件地址简称
     */
    @ExcelProperty(value = "收件地址简称")
    @ApiModelProperty("收件地址简称")
    private String takeAddr;

    /**
     * 收件地址
     */
    @ExcelProperty(value = "收件地址")
    @ApiModelProperty(value = "收件地址")
    private String takeAddress;

    /**
     * 收件联系人
     */
    @ExcelProperty(value = "收件联系人")
    @ApiModelProperty("收件联系人")
    private String takeContacts;

    /**
     * 收件日期
     */
    @ExcelProperty(value = "收件日期")
    @ApiModelProperty("收件日期")
    private Date takeDate;

    /**
     * 收件联系电话
     */
    @ExcelProperty(value = "收件联系电话")
    @ApiModelProperty("收件联系电话")
    private String takeTel;

    /**
     * 收件地址纬度
     */
    @ExcelProperty(value = "收件地址纬度")
    @ApiModelProperty("收件地址纬度")
    private String takeLat;

    /**
     * 收件地址经度
     */
    @ExcelProperty(value = "收件地址经度")
    @ApiModelProperty("收件地址经度")
    private String takeLng;

    /**
     * 收件备注
     */
    @ExcelProperty(value = "收件备注")
    @ApiModelProperty("收件备注")
    private String takeMemo;

    /**
     * 调度员ID
     */
    @ExcelProperty(value = "调度员ID")
    @ApiModelProperty("调度员ID")
    private Long dispatcherId;

    /**
     * 线路ID
     */
    @ExcelProperty(value = "线路ID")
    @ApiModelProperty("线路ID")
    private String lineId;

    /**
     * 线路名称
     */
    @ExcelProperty(value = "线路名称")
    @ApiModelProperty("线路名称")
    private String lineName;

    /**
     * 司机ID
     */
    @ExcelProperty(value = "司机ID")
    @ApiModelProperty("司机ID")
    private String driverId;

    /**
     * 驾驶员名称
     */
    @ExcelProperty(value = "驾驶员名称")
    @ApiModelProperty("驾驶员名称")
    private String driverName;

    /**
     * 驾驶员手机
     */
    @ExcelProperty(value = "驾驶员手机")
    @ApiModelProperty("驾驶员手机")
    private String driverPhone;

    /**
     * 车牌号码
     */
    @ExcelProperty(value = "车牌号码")
    @ApiModelProperty("车牌号码")
    private String carNumber;

    /**
     * 车辆ID
     */
    @ExcelProperty(value = "车辆ID")
    @ApiModelProperty("车辆ID")
    private String carId;

    /**
     * 创建人
     */
    @ExcelProperty(value = "创建人")
    @ApiModelProperty("创建人")
    private String createBy;

    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 更新人
     */
    @ExcelProperty(value = "更新人")
    @ApiModelProperty("更新人")
    private String updateBy;

    /**
     * 更新时间
     */
    @ExcelProperty(value = "更新时间")
    @ApiModelProperty("更新时间")
    private Date updateTime;

    @ApiModelProperty("订单明细")
    private List<OrderDtlVo> items;

    @ApiModelProperty("部门名称")
    private String deptName;

    @ApiModelProperty("运单列表")
    private List<WaybillVo> wayItems;

    @ApiModelProperty("子订单列表")
    private List<OrderVo> orderItems;

    @ApiModelProperty("订单日志")
    private List<OrderLogVo> orderLogs;

    @ApiModelProperty("订单操作日志")
    private List<OperatorLogVo> operatorLogs;

    /**
     * 取件人
     */
    @ApiModelProperty("取件人")
    private Long pickupId;
    /**
     * 派件人
     */
    @ApiModelProperty("调度员ID")
    private Long dispatchId;

    @ApiModelProperty("调度员")
    private String dispatcher;

    /**
     * 体积
     */
    @ApiModelProperty("体积")
    private BigDecimal volume;
    /**
     * 重量
     */
    @ApiModelProperty("重量")
    private BigDecimal weight;

    @ApiModelProperty("数量")
    private Long nums;

    /**
     * 仓库归属部门
     */
    @ApiModelProperty("仓库部门")
    private Long storeDept;

    @ApiModelProperty("仓库部门")
    private List<String> statustr;

    @ApiModelProperty("是否拖车")
    private String isTrailer;

    @ApiModelProperty("暂存状态")
    private String isStaging;

    @ApiModelProperty("暂存时间")
    private Date stagingTime;

    @ApiModelProperty("子订单ID")
    private List<String> orderIds;

    @ApiModelProperty("车次ID")
    private String scheduleId;
    @ApiModelProperty("车次名称")
    private String scheduleDayName;

    /**
     * 暂存部门
     */
    @ApiModelProperty("暂存部门")
    private Long stagingDept;

    /**
     * 暂存点
     */
    @ApiModelProperty("暂存点")
    private  String stagingDeptName;

    @ApiModelProperty("是否车辆")
    private String buss;

    /**
     * 车辆外观正前图片
     */
    private List<SysOss> facadeOss;

    /**
     * 车辆外观正左图片
     */
    private List<SysOss> facadeLeftOss;

    /**
     * 车辆外观正后图片
     */
    private List<SysOss> facadeAfterOss;

    /**
     * 车辆外观正右图片
     */
    private List<SysOss> facadeRightOss;

    /**
     * 仪表盘图片
     */
    private List<SysOss> dashboardOss;

    /**
     * 车架号图片
     */
    @ApiModelProperty("车架号图片")
    private List<SysOss> carOss;
    /**
     * 车钥匙图片
     */
    @ApiModelProperty("车钥匙图片")
    private List<SysOss> carKeyOss;
    /**
     * 行驶证图片
     */
    @ApiModelProperty("行驶证图片")
    private List<SysOss> driveLicenOss;
    /**
     * 登记书图片
     */
    @ApiModelProperty("登记书图片")
    private List<SysOss> registerBookOss;

    /**
     * 交接现场图片
     */
    @ApiModelProperty("交接现场图片")
    private List<SysOss> handoverOss;

    /**
     * 装车图片
     */
    @ApiModelProperty("装车图片")
    private List<SysOss> loadOss;

    /**
     * 目的地图片
     */
    @ApiModelProperty("目的地图片")
    private List<SysOss> takeOss;

    /**
     * 卸车图片
     */
    @ApiModelProperty("卸车图片")
    private List<SysOss> unloadOss;

    /**
     * 瑕疵图片
     */
    private List<SysOss> flawOss;

    /**
     * 到达其他
     */
    private List<SysOss> otherTwoOss;

    /**
     * 其他
     */
    @ApiModelProperty("其他")
    private List<SysOss> otherOss;

    /**
     * 车辆流转状态
     */
    @ApiModelProperty("车辆流转状态")
    private String carStatus;


    /**
     * 删除标识
     */
    @ExcelProperty(value = "删除标识", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "sys_del_flag")
    @ApiModelProperty("删除标识")
    private String delFlag;

    @ApiModelProperty("承运商")
    private Long carrierDeptId;

    private String carrierName;


    private String months;
    private Long warehouseNums;
    private Long exWarehouseNums;
    private Long transferNums;
    private Long dealNums;

    /**
     * 物品信息
     */
    private Boolean checked;

    /**
     * 派单权限
     */
    private Boolean isDispatch;
    /**
     * 处置审核状态
     */
    private String isCheck;

    /**
     * 仓库电话
     */
    private String storeTel;

    private String pickupTel;

    private String character;

    private String phone1;
    private String phone2;

    /**
     * 配送类型
     */
    private String delivery;
    private String storeDeptName;

    private String replaceNo;

    private String signeeName;

}
